"""配置模块：定义预处理过程中使用的常量和参数"""

from typing import Dict, List, Pattern, Union
import re

# 文件编码
ENCODING: str = 'GBK'

# 字段映射关系
TRAIN_FIELD_MAPPING: Dict[str, str] = {
    'Unnamed: 0': 'train_question_id',
    'Question': 'raw_question',
    'Options': 'raw_options',
    'Answers': 'correct_options'
}

TEST_FIELD_MAPPING: Dict[str, str] = {
    'index': 'test_question_id',
    'Question': 'raw_question',
    'Options': 'raw_options'
}

# 需要从测试集中删除的字段
TEST_DROP_FIELDS: List[str] = ['Unnamed: 0']

# 术语标准化规则（基于知识库标准表述）
TERM_STANDARDIZATION: Dict[Union[str, Pattern[str]], str] = {
    re.compile(r'TDD\s*-\s*LTE', re.IGNORECASE): 'TD-LTE',
    re.compile(r'RRU\s*设备', re.IGNORECASE): '射频拉远单元（RRU）',
    re.compile(r'GB\s*接口', re.IGNORECASE): 'Gb接口',
    re.compile(r'(\d+)Kbps', re.IGNORECASE): r'\1 kbps',
    re.compile(r'(\d+)Mbps', re.IGNORECASE): r'\1 mbps',
    re.compile(r'5g', re.IGNORECASE): '5G',
    re.compile(r'4g', re.IGNORECASE): '4G',
    re.compile(r'LTE\s*系统', re.IGNORECASE): 'LTE系统'
}

# 特殊符号清洗规则
SPECIAL_CHARACTERS_PATTERNS: Dict[Union[str, Pattern[str]], str] = {
    re.compile(r'\s+'): ' ',  # 多个空格合并为一个
    re.compile(r'[|#]'): '',  # 去除特殊分隔符
    re.compile(r'～'): '~',  # 全角波浪号转半角
    re.compile(r'？+'): '？',  # 多个问号合并
    re.compile(r'。+'): '。'   # 多个句号合并
}

# 冗余文本模式
REDUNDANT_TEXT_PATTERNS: List[Union[str, Pattern[str]]] = [
    re.compile(r'^答案：'),
    re.compile(r'^正确选项：'),
    re.compile(r'^解析：')
]

# 选项前缀模式（用于去除选项标识）
OPTION_PREFIX_PATTERN: Union[str, Pattern[str]] = re.compile(r'^[A-E][:.、 ]')
